import java.util.HashMap;
import java.util.Map;
public class mather {
    Map<String,IUSB> plugins =new HashMap();
    //主板，遵循USB规范的都允许安装
    public void install(String name,IUSB usb){
        //安装上之后存储起来

    //需求就是把鼠标等插件存储起来，所以提供一个安装的方法，把插件作为参数放进去，所以集合里也是把安装了的插件存储在集合里，所以集合i的参数就是安装方法里的参数
        plugins.put(name,usb);
        //plugins.put("键盘",usb);
        //这块要是写死了主方法那加新的插件，这块也得加，所以用变量就好，
    }
    //上面是把所有插件安装，并储存在一起，之后该提供一个通信的方法，开始工作
    //参数传进去肯定得有一个接收她的方法
    public void doWork(){
        //没有必要传入参数，一是你得有方法接收她，二是数据已经被放入集合中了，直接使用全局变量即遍历这个集合就可以了
        //传进来的是一个集合，要得到里面每个元素肯定想要遍历他的values,map不能用foreach
        //如果没有接口这个统一规范的话，主板就没法统一调用这些插件，还得多写很多个插件自己的方法
        //接口是一种规范，约束了方法名称得一致，还有数据类型，只要遵循接口的规范，就可以实现调用里面的方法，参数是接口类型的参数，实现这个接口的类的实例，也是接口类的子类，多态的知识点
        for (IUSB iusb:plugins.values()) {
            iusb.Power();
            }
    }
    public void WorkOff(String name){
        //如果想遍历key,也可以用集合里的方法remove来实现
        //for (String name:plugins.keySet()){
             // name.PowerOff();
        plugins.remove(name);



    }

}
